const fs = require('fs');
const path = require('path');
const iconv = require('iconv-lite');

// 测试单个文件的音标提取
function debugFileExtraction(filePath) {
  console.log(`正在分析文件: ${filePath}`);
  
  try {
    // 使用iconv-lite读取GBK编码的文件
    const buffer = fs.readFileSync(filePath);
    const content = iconv.decode(buffer, 'gbk');
    
    console.log('文件内容（前500字符）:');
    console.log(content.substring(0, 500));
    console.log('=====================================');
    
    // 查找所有CDATA内容
    const cdataMatches = content.match(/<!$$CDATA$$([^]]+?)$$]]>/g);
    
    if (cdataMatches) {
      console.log('找到的所有CDATA内容:');
      cdataMatches.forEach((cdata, index) => {
        console.log(`${index + 1}. ${cdata}`);
        const codeMatch = cdata.match(/<!$$CDATA$$([^]]+?)$$]]>/);
        if (codeMatch) {
          const code = codeMatch[1];
          console.log(`   提取的代码: "${code}"`);
          console.log(`   长度: ${code.length}`);
          console.log(`   包含数字或特殊字符: ${/[0-9@:5^]/.test(code)}`);
          console.log(`   符合字符规则: ${/^[A-Za-z0-9@:5^\]\(\); \-?]+$/.test(code)}`);
        }
      });
    } else {
      console.log('未找到CDATA内容');
    }
    
    // 查找所有标签
    const tagMatches = content.match(/<[^>]+>/g);
    if (tagMatches) {
      console.log('\n文件中的所有标签（前50个）:');
      const uniqueTags = [...new Set(tagMatches)].slice(0, 50);
      uniqueTags.forEach((tag, index) => {
        console.log(`${index + 1}. ${tag}`);
      });
    }
    
  } catch (error) {
    console.error(`处理文件时出错:`, error.message);
  }
}

// 选择几个文件进行调试
const testFiles = [
  path.join(__dirname, '..', 'resources', 'dic', 'a', 'abandon.txt'),
  path.join(__dirname, '..', 'resources', 'dic', 'b', 'bear.txt')
];

testFiles.forEach(file => {
  debugFileExtraction(file);
  console.log('\n' + '='.repeat(50) + '\n');
});